/**
 * Payment 相关逻辑编写
 * @author WangXinLei
 * @date 2014-11-13
 */
package com.chnbst.bstyun.service;

import java.util.List;
import java.util.Map;

import com.chnbst.bstyun.model.pojo.Payment;
import com.chnbst.bstyun.model.vo.PaymentVo;

public interface PaymentService {
	/**
	 * 添加Payment
	 * @param Payment 线下支付信息
	 * @return 返回自动增量id对象
	 */
	boolean insertPayment(Payment payment);

	/**
	 * 更新线下支付
	 * @param payment 线下支付信息
	 * @return 布尔值 成功为true，失败为false
	 */
	boolean updatePayment(Payment payment);
	
	/**
	 * 根据线下支付ID查询 payment对象
	 * @param paymentId 线下支付主键
	 * @return 返回 payment
	 */
	Payment selectPaymentByPaymentId(Integer paymentId);
	
	/**
	 * 根据线下支付ID查询 payment对象
	 * @param paymentId 线下支付主键
	 * @return 返回 payment
	 */
	PaymentVo selectPaymentVoByPaymentId(Integer paymentId);

	/**
	 * 根据用户ID查询 payment对象
	 * @param userId 用户ID
	 * @return 返回 payment
	 */
	List<PaymentVo> selectPaymentByUserId(Integer userId);

	/**
	 * 根据交易类型查询 该种类型的最大编号
	 * @param dealType 交易类型
	 * @return 返回该种类型的最大编号的单条数据
	 */
	String selectBigNumByDealType(String dealType);

	/**
	 * 查询线下支付的总数
	 * @param map
	 * @return 返回总数
	 */
	int selectPaymentCount(Map<String, Object> map);

	/**
	 * 查询所有的线下支付数据list
	 * @param map
	 * @return 返回 线下支付list
	 */
	List<Payment> selectAllPayments(Map<String, Object> map);
	
	/**
	 * 根据订单ID查询 payment对象
	 * @param orderId 订单ID
	 * @return 返回 payment
	 */
	Payment selectPaymentByOrderId(Integer orderId);
}
